package com.qf.service.impl;

import com.qf.dao.ProductDao;
import com.qf.dao.impl.ProductDaoImpl;
import com.qf.pojo.PageBean;
import com.qf.pojo.Product;
import com.qf.service.ProductService;

import java.sql.SQLException;
import java.util.List;

/**
 * @author 高圆圆
 * @date 2023/1/3 20:06
 * 商品的业务接口实现
 */
public class ProductServiceImpl  implements ProductService {
    /**
     * 获取最新商品
     * @return 返回最新商品列表
     */
    @Override
    public List<Product> getNewProducts() {
        try {
            //调用数据访问接口
            ProductDao productDao = new ProductDaoImpl() ;
            List<Product> products = productDao.selectNewProducts();
            if(products!=null){
                return products ;
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }


    /**
     * 获取热门商品
     * @return 返回热门商品列表
     */
    @Override
    public List<Product> getHotProducts() {
        try {
            //调用数据访问接口
            ProductDao productDao = new ProductDaoImpl() ;
            List<Product> products = productDao.selectHotProducts();
            if(products!=null){
                return products ;
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

        return null;
    }

    /**
     * 通过商品的id获取指定的商品实体
     * @param pid 商品id
     * @return 返回商品实体
     */
    @Override
    public Product getProductByPid(String pid) {
        //调用商品的数据访问接口
        try {
            ProductDao productDao = new ProductDaoImpl() ;
            Product product = productDao.selectProductByPid(pid);
            if(product!=null){
                return product ;
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

        return null;
    }

    /**
     * 按照商品分类分页获取商品的数据
     * @param cid  商品的分类id
     * @param currentPage  当前页码
     * @param pageSize     每页显示的条数
     * @return  返回商品的分页实体
     */
    @Override
    public PageBean<Product> getProductByPage(String cid, int currentPage, int pageSize) {
        try {
            //调用商品的数据访问接口访问数据
            ProductDao productDao = new ProductDaoImpl() ;
            //查询分类的商品分页列表数据
            List<Product> list = productDao.selectProductByPage(cid, currentPage, pageSize);
            //查询当前分类信息中总记录数的条数
            int totalCount = productDao.selectTotalCount(cid);
            if(list!=null && totalCount>0){
                return new PageBean<>(currentPage,pageSize,totalCount,list);
            }


        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return  null ;
    }


    @Override
    public List<Product> findPageProduct() {
        try {
            ProductDao productDao = new ProductDaoImpl() ;
            List<Product> products = productDao.selectProducts() ;
            return products;
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }
}
